Update v triggeru
Otázka od: Roman
17. 10. 2002 6:22
Ahoj,
mam tabulku Zaznamy(id,cas,hodnota) s triggerem After Update, ve kterem pri
zmene pole Hodnota chci provest:
UPDATE zaznamy SET hodnota=hodnota-old.hodnota+new.hodnota WHERE
(cas>new.cas); (tj. potrebuji pri zmene hodnoty v jednom zaznamu
aktualizovat hodnoty v nasledujicich zaznamech).
A ted nevim, jak se to bude chovat: spusti se trigger pro kazdy zaznam,
ktery z triggeru updatuji (tj. rekurzivne se mi bude ten dotaz spustet pro
kazdy nasledujici zaznam)? V pripade, ze ano, da se to nejak elegantne
vyresit v tom triggeru tak, aby se ten trigger pro updatovane zaznamy vubec
nespoustel (vypnout trigger - provest kod - zapnout trigger)?
Predem diky za odpoved,
Roman
D4, Firebird
- - - - - - - - - - - - - - - - - - - - -
http://kouzelne.misto.cz/
Odpovedá: Jiri Wendl, KSH-Data
17. 10. 2002 8:25
Ahoj,
ten trigger se ti bude spoustet pro kazdej zaznam.
Tohle bych spis resil pres StoredProc.
Vytvor si StoredProc a tu volej pro updatovani tabulky.
Uvnitr te procedury uz si muzes delat co chces.
Preji hodne zdaru
Jirka
>Ahoj,
>mam tabulku Zaznamy(id,cas,hodnota) s triggerem After Update, ve kterem pri
>zmene pole Hodnota chci provest:
>UPDATE zaznamy SET hodnota=hodnota-old.hodnota+new.hodnota WHERE
>(cas>new.cas); (tj. potrebuji pri zmene hodnoty v jednom zaznamu
>aktualizovat hodnoty v nasledujicich zaznamech).
>A ted nevim, jak se to bude chovat: spusti se trigger pro kazdy zaznam,
>ktery z triggeru updatuji (tj. rekurzivne se mi bude ten dotaz spustet pro
>kazdy nasledujici zaznam)? V pripade, ze ano, da se to nejak elegantne
>vyresit v tom triggeru tak, aby se ten trigger pro updatovane zaznamy vubec
>nespoustel (vypnout trigger - provest kod - zapnout trigger)?
Odpovedá: Jan Sebelík
17. 10. 2002 9:08
> Odesílatel: Roman <sw.maurice@seznam.cz>
> mam tabulku Zaznamy(id,cas,hodnota) s triggerem After Update, ve kterem pri
> zmene pole Hodnota chci provest:
> UPDATE zaznamy SET hodnota=hodnota-old.hodnota+new.hodnota WHERE
> (cas>new.cas); (tj. potrebuji pri zmene hodnoty v jednom zaznamu
> aktualizovat hodnoty v nasledujicich zaznamech).
No jo, rekurzivni volani triggeru, na to se musi opatrne.
Asi bych se pokusil tam pridat nejakou polozku Status, pomoci ktere bych tu
rekurzi zastavil.
Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347735)
=========================================
Odpovedá: Roman
17. 10. 2002 12:39
> mam tabulku Zaznamy(id,cas,hodnota) s triggerem After Update, ve kterem
pri
> zmene pole Hodnota chci provest:
> UPDATE zaznamy SET hodnota=hodnota-old.hodnota+new.hodnota WHERE
> (cas>new.cas); (tj. potrebuji pri zmene hodnoty v jednom zaznamu
> aktualizovat hodnoty v nasledujicich zaznamech).
>No jo, rekurzivni volani triggeru, na to se musi opatrne.
>Asi bych se pokusil tam pridat nejakou polozku Status, pomoci ktere bych tu
rekurzi zastavil.
No zatim to tak resim, jenom mi to pride takove divne Provadet to v SP
by slo taky (zaznamy by nemely byt vkladany jinak nez ze SP), jenom jsem
chtel zavest jakousi soudrznost tech zaznamu uz na urovni tabulky.
Roman
==============================
http://kouzelne.misto.cz